Default Left Argument
The special syntax: ⍺←expr is used to give a default value to the left argument if a dfn is called monadically. For example:
root←{ ⍝ ⍺th root ⍺←2 ⍝ default to sqrt ⍵*÷⍺ }
The expression to the right of ⍺← is evaluated only if its dfn is called with no left argument.
Note that the syntax must be exactly ⍺←, that is, it cannot contain parentheses, and so on.
⍺← must be the first tokens at the beginning of an expression.
Ambivalence
The assignment ⍺←⊢ allows an ambivalent function to call an ambivalent sub-function. For example in:
foo←{
⍺←⊢
⍺ goo ⍵
}
If foo is given a left argument, this is passed to goo. Otherwise, ⍺ is assigned ⊢ and the last line is ⊢ goo ⍵, which is a monadic call on goo followed by the ⊢ (Right) of the result of goo, which is the same value.
The assignment ⍺←⍣0 allows an ambivalent operator to skip the application of an operand to a missing argument. For example in:
over←{ ⍺←⍣0 (⍺⍺ ⍺)⍵⍵(⍺⍺ ⍵) }
If the function derived from over is given a left argument, this argument is preprocessed by the left operand ⍺⍺ and the result is passed to the right operand ⍵⍵. Otherwise, ⍺ is assigned ⍣0 and the last line is (⍺⍺⍣0)⍵⍵(⍺⍺ ⍵), which is a monadic call on ⍵⍵ followed by not applying ⍺⍺ to the result of ⍵⍵, returning it unmodified.
The assignment ⍺←⍵ allows a function to act as if the commute operator (⍨) was applied to it twice:
sort←{
⍺←⍵
⍵[⍋⍺]
}
If sort is given a left argument, the right argument is sorted according to the left argument. Otherwise, ⍺ is assigned ⍵ and the last line is ⍵[⍋⍵], which has the right argument sorted according to itself. This is, therefore, equivalent to sort←{⍵[⍋⍺]}⍨⍨ or sort←{⍺[⍋⍵]}⍨.